<?php
/**
 * Class chargeant le menu d'objet avec ses sous menus ...
 * @author  Joseph Lemoine - lemoine.joseph@gmail.com
 * @version 1
 */
class EveMarket extends Dao {
    /**
     * Nom de la base de donnée liée
     * @author  Joseph Lemoine - lemoine.joseph@gmail.com
     * @var     string
     */
    protected $_bdd = "EVE";

    /**
     * Nom de la table
     * @author  Joseph Lemoine - lemoine.joseph@gmail.com
     * @var     string
     */
    protected $_table = "invmarketgroups";

    /**
     * Définie l'accès en lecture seule ou non de la table
     * @author  Joseph Lemoine - lemoine.joseph@gmail.com
     * @var	bool
     */
    protected $_readOnly = TRUE;

    /**
     * Liste des sous menus associés
     * @author	Joseph Lemoine - lemoine.joseph@gmail.com
     * @var	array	[menuID] = evemenu
     */
    public $subGroup;

    /**
     * Liste des items de ce menu
     * @author	Joseph Lemoine - lemoine.joseph@gmail.com
     * @var	array	[typeID] = nom item
     */
    public $itemList;

    /**
     * Constructeur de class
     * @author	Joseph Lemoine - lemoine.joseph@gmail.com
     * @param	int	$marketGroupID	Identifiant du menu recherché
     * @return	bool
     * @access	public
     */
    public function  __construct($marketGroupID = NULL) {
	parent::__construct($this->base, $this->table, $this->readOnly);

	$this->load($marketGroupID);
    }

    /**
     * Charge la catégorie demandé puis tout les sous menu l'ayant comme parent
     * Charge la suite de façon récursive (mouhahaha, adieu processeur)
     * @author	Joseph Lemoine - lemoine.joseph@gmail.com
     * @param
     */
    public function load($id = null, $column = null, $order = null, $forceReload = false) {
	/* Chargement du groupe */
	parent::load($id, $column, $order, $forceReload);

	/* Si pas d'ID, c'est la racine. On lui donne ses attributs */
	if(empty($id)){
	    $this->marketGroupName = MARKETROOTNAME;
	    $this->hasTypes = 0;
	}
	
	/* Si ce menu contient autre chose que juste des items */
	if(!$this->hasTypes){
	    /* Chargement de ses sous menu */
	    $sql = "SELECT
		    marketGroupID
		FROM invmarketgroups AS m
		WHERE parentGroupID " . (empty($id) ? "IS NULL" : " = " . $id);

	    /* Exécution de la requète */
	    $req = Sql::run($sql, $this->_bdd);

	    /* Si on à bien des résultats */
	    if(!empty($req))
		/* Création de chaque sous menu */
		foreach(Sql::run($sql, $this->_bdd) AS $row => $data)
		    if(!EveMath::ExcludeMarketGroup($data["marketGroupID"]))
			$this->subGroup[$row] = new EveMarket($data["marketGroupID"]);
		/* Sinon si ce menu contient uniquement des item et qu'on à demandé la liste */
		}else if($_POST["marketID"] == $this->marketGroupID){
			$this->loadItemList();
		}
    }

    /**
     * Charge la liste des item appartenant à ce groupe du market
     * @author	Joseph Lemoine - lemoine.joseph@gmail.com
     * @param	VOID
     * @return	VOID
     * @access	private
     */
    private function loadItemList(){
	$sql = "SELECT
		t.typeID,
		t.typeName,
		a633.attributeID,
		a633.valueInt AS MetaLvl
	    FROM invtypes AS t
			LEFT JOIN dgmTypeAttributes a633 ON t.typeID=a633.typeID
	    WHERE t.marketGroupID = ".$this->marketGroupID."
			AND t.published = 1
			AND a633.attributeID = 633
			AND (a633.valueInt = 0 OR a633.valueInt = 5)
		ORDER BY typeName ASC";

	$req = Sql::run($sql, $this->_bdd);

	if(!empty($req))
	    foreach($req AS $row => $data)
		$this->itemList[$data["typeID"]] = $data["typeName"];
    }
}
?>
